import joblib                       # joblib，用于对象的序列化和反序列化
import yaml                         # yaml，用于读取配置文件
import time                         # time，用于计算运行时间
import os                           # os，用于获取文件大小

# 获取 0_setting.yaml 中的制定键对应的值
def get_config_value(key):
    """获取配置文件中的指定键对应的值"""
    with open("0_setting.yaml", "r") as f:
        config = yaml.safe_load(f)
    return config[key]

def save_file(file, filename, loc):
    """
    保存文件到指定路径，并打印保存信息和运行时间
    """
    start = time.time()
    print(f"正在将 {filename} 保存到 {loc}")
    joblib.dump(file, loc)
    end = time.time()
    print(f"保存完毕，文件位置: {loc}, 文件大小: {os.path.getsize(loc) / 1024 / 1024:.3f}M")
    print(f"运行时间: {end - start:.3f}秒")

def load_file(filename, loc):
    """
    从指定路径加载文件，并打印加载信息
    """
    print(f"正在从 {loc} 加载文件 {filename}")
    return joblib.load(loc)
